/** global作用域，使用let或者const就不会打印出结果 */
var age = 419;
console.log(window.age)
/** 滚动 */
window.scrollTo({
    left: 100, top: 100, behavior: 'auto'
})
window.scrollTo({
    left: 100, top: 100, behavior: 'smooth'
})
/** 打开新窗口 */
window.open('链接', '窗口名')
/* window.location对象具有多个属性，其中一些常用的属性包括：
href：包含完整的URL。
host：包含主机名和端口号。
hostname：包含主机名。
pathname：包含URL的路径部分。
protocol：包含协议部分，如 "http:" 或 "https:"。
search：包含URL的查询部分，即问号后面的部分
 */

/** navigator对象 */
/* 通常用于确定浏览器的类型 
navigator对象是一个全局对象，代表了浏览器的信息和状态。它提供了许多属性，用于获取关于浏览器的信息，包括用户代理字符串、浏览器版本、操作系统等。一些常用的属性包括：
userAgent：包含用户代理字符串，用于识别浏览器和操作系统。
appName：包含浏览器的名称。
appVersion：包含浏览器的版本信息。
platform：包含浏览器所在的操作系统信息。
*/

/** 检测插件（ie10及其以上版本）  */
/* 
要检测浏览器中的插件，可以使用navigator对象的plugins属性。
navigator.plugins属性返回的是一个PluginArray对象，它包含了表示已安装插件的Plugin对象。
每个Plugin对象代表一个已安装的插件，包括插件的名称、描述、文件名等信息。
通过遍历PluginArray对象，可以获取每个插件的详细信息，例如插件的名称、描述、文件名等。
hasPlugin('')用于检查插件名称
*/

/** 注册处理程序 */
// 使用registerProtocolHandler()方法，把web程序注册为像桌面一样的默认应用程序。

/** screen对象 */
/*
screen对象代表了用户的屏幕或显示器。它提供了关于屏幕尺寸、颜色深度等信息的属性，以及一些用于获取屏幕相关信息的方法。一些常用的属性包括：
width：屏幕的宽度（以像素为单位）。
height：屏幕的高度（以像素为单位）。
availWidth：可用的屏幕宽度，减去操作系统任务栏等的宽度。
availHeight：可用的屏幕高度，减去操作系统任务栏等的高度。
colorDepth：屏幕的颜色深度，即每个像素的位数。
pixelDepth：屏幕的像素深度，通常与colorDepth相同。
*/

/** 历史状态管理 */
/* 
历史状态管理通常指的是在Web开发中，通过浏览器的历史记录来管理页面状态的技术。
这主要涉及到使用浏览器提供的history对象，通过其属性和方法来实现对页面状态的管理和控制。
其中，history对象包括一些常用的方法，如pushState()、replaceState()，以及一些属性，如length，
用于管理浏览器历史记录。通过这些方法和属性，开发人员可以实现在不刷新页面的情况下改变URL，
管理浏览器历史记录，以及实现前进、后退等操作，从而实现更加流畅的用户体验。
*/
/**获取当前设备地理位置 */

// 检查浏览器是否支持Geolocation
if ("geolocation" in navigator) {
    // 获取地理位置
    navigator.geolocation.getCurrentPosition(function (position) {
        // 获取到地理位置后的处理
        var latitude = position.coords.latitude;
        var longitude = position.coords.longitude;
        console.log("Latitude: " + latitude + ", Longitude: " + longitude);
    });
} else {
    console.log("Geolocation is not supported by this browser.");
}

// 引入百度地图API脚本
var script = document.createElement("script");
script.src = "http://api.map.baidu.com/api?v=2.0&ak=YOUR_API_KEY";
document.body.appendChild(script);

// 定义逆地理编码函数
function reverseGeocode(lat, lng) {
    // 创建逆地理编码服务
    var geoc = new BMap.Geocoder();

    // 定义经纬度
    var point = new BMap.Point(lng, lat);

    // 执行逆地理编码
    geoc.getLocation(point, function (result) {
        if (result) {
            console.log(result.address); // 输出位置描述
        } else {
            console.log("No results found");
        }
    });
}

// 调用逆地理编码函数
reverseGeocode(39.915, 116.404);

/**浏览器联网状态（返回一个布尔值） */
navigator.onLine
/** 访问设备电池及其充电状态 */
navigator.getBattery()
/* 
您可以使用JavaScript中的Battery API来访问设备的电池信息和充电状态。
通过navigator.getBattery()方法可以获取到一个Promise对象，
然后您可以通过该对象的属性来获取电池的相关信息，比如电量、充电状态等
 */
/**设备内存大小*/
navigator.deviceMemory
/* 
可以使用JavaScript中的navigator.deviceMemory属性来获取设备的内存大小。
这个属性返回一个数字，表示设备的近似内存大小，以GB为单位。
请注意，这个属性并非所有浏览器都支持，您需要在支持的浏览器中进行测试。
 */
/**处理器核心数 */
navigator.hardwareConcurrency
/* 
可以使用JavaScript中的navigator.hardwareConcurrency属性来获取设备的处理器核心数。
这个属性返回一个数字，
表示设备的处理器核心数。
 */
